System migrations of virtual machines are performed for a variety of reasons, including to provide a backup system while hardware and/or software upgrades are being installed. The virtual machine (including memory, system, applications, etc.) that is being copied is referred to as the source virtual machine and the virtual machine that is built as a result of the migration is referred to as the target virtual machine.
One type of migration is live migration, which migrates a virtual machine while it is running. Live virtual machine guest migration is often desired by companies with mission critical systems. Conventional migration systems generally perform live migration (or “swapping”) between two guests as follows. Guest A is migrated onto guest B's physical machine, and then guest B is migrated onto guest A's physical machine. However, this conventional migration process requires at least one of the physical machines to have enough hardware resources to support the additional virtual guest. In other words, if at least one physical machine does not have enough hardware resources to support the additional virtual guest, the migration process cannot be performed. Also, with conventional live migration processes only one virtual machine can be migrated at any given time.